const db = require('../db');

exports.getArticleCates = (req, res) => {
  const sql = 'select * from ev_article_cate where is_delete=0 order by id asc';
  db.query(sql, (err, result) => {
    if (err) return res.cc(err);

    res.send({
      status: 0,
      message: '查询成功',
      data: result,
    });
  });
};

exports.addArticleCate = (req, res) => {
  // 定义查询 分类名称 与 分类别名 是否被占用的 SQL 语句
  const sql = `select * from ev_article_cate where name=? or alias=?`;
  db.query(sql, [req.body.name, req.body.alias], (err, results) => {
    // 执行 SQL 语句失败
    if (err) return res.cc(err);

    const { name, alias } = req.body;
    // 名称是否占用标识
    const isContainName = results.some((item) => item.name === name);
    // 别名是否占用标识
    const isContainAlias = results.some((item) => item.alias === alias);

    if (isContainName && isContainAlias) return res.cc('同时占用');
    if (isContainName) return res.cc('名称占用');
    if (isContainAlias) return res.cc('别名占用');

    // 定义sql语句
    const sql = 'insert into ev_article_cate set ?';

    // 执行sql语句，插入数据
    db.query(sql, req.body, (err, result) => {
      if (err) return res.cc(err);
      if (result.affectedRows !== 1) return res.cc('失败');
      res.send({
        status: 0,
        message: '成功',
      });
    });
  });
};

exports.deleteCateById = (req, res) => {
  // res.send('ok');
  // 定义sql语句
  const sql = 'update ev_article_cate set is_delete=1 where id=?';

  db.query(sql, req.params.id, (err, result) => {
    if (err) return res.cc(err);
    if (result.affectedRows !== 1) return res.cc('删除失败');
    res.send({
      status: 0,
      message: '删除成功',
    });
  });
};

// 文章分类处理函数
exports.getCateById = (req, res) => {
  const sql = 'select * from ev_article_cate where id=?';

  db.query(sql, req.params.id, (err, result) => {
    if (err) return res.cc(err);
    if (result.length !== 1) return res.cc('查询失败');

    res.send({
      status: 0,
      message: '成功',
      data: result[0],
    });
  });
};

exports.updateCateById = (req, res) => {
  // res.send('ok');
  const sql =
    'select * from ev_article_cate where id<>? and (name=? or alias=?)';
  const { Id, name, alias } = req.body;
  db.query(sql, [Id, name, alias], (err, result) => {
    if (err) return res.cc(err);

    const isContainName = result.some((item) => item.name === name);
    const isContainAlias = result.some((item) => item.alias === alias);

    if (isContainName && isContainAlias) return res.cc('都重复');
    if (isContainAlias) return res.cc('别名重复');
    if (isContainName) return res.cc('名称重复');

    const sql = 'update ev_article_cate set ? where id=?';

    db.query(sql, [req.body, req.body.Id], (err, result) => {
      if (err) return res.cc(err);
      if (result.affectedRows !== 1) return res.cc('更新失败');
      res.send({
        status: 0,
        message: '更新成功',
      });
    });

    // res.send('ok');
  });
};
